package swimv2.ejb.control;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import swimv2.ejb.entity.Amministratore;
import swimv2.ejb.entity.Utente;
import swimv2.ejb.remote.AutenticazioneRemote;
import swimv2.ejb.util.GestioneUtenti;
import swimv2.ejb.util.LoginToken;
import swimv2.ejb.util.LoginToken.TipoAccesso;

/**
 * Session Bean implementation class GestioneUtenti
 */
@Stateless(name = "Autenticazione")
public class Autenticazione implements AutenticazioneRemote {
	@PersistenceContext(unitName = "SWIMV2")
	private EntityManager entityManager;

	/**
	 * Default constructor.
	 */
	public Autenticazione() {
	}

	@Override
	public LoginToken login(String username, String password) {

		Query query = entityManager.createQuery("FROM Amministratore");
		if (query.getResultList().isEmpty()) {
			Amministratore amministratore = new Amministratore();
			entityManager.persist(amministratore);
		}
		
		Utente utente = GestioneUtenti.cercaUtente(entityManager, username);
		if(utente == null)
			return null;
		if (utente.getPassword().equals(password)) {
			LoginToken token = new LoginToken(username, utente.getNome(),utente.getFoto());
			token.setTipoAccesso(TipoAccesso.Utente);
			if(entityManager.find(Amministratore.class, username)!= null)
			{
				token.setTipoAccesso(TipoAccesso.Amministratore);
				
			}

			return token;

		} else
			return null;
	}
}
